Distributed control systems typically include distributed high-speed processors or controllers that may be connected to industrial equipment, such as automated assembly lines or machine tools, to operate the equipment in accordance with a control program. In a distributed control system, responsibility for execution of the control program is divided among the processors rather than being consolidated in a centralized controller. The control program is partitioned in accordance with an allocation scheme and the resulting portions of program code are distributed and stored in each of the memories associated with the various processors. Distributing the control program in this manner enables concurrent processing, thus providing an extremely fast execution time. Moreover, amongst its multiple other advantages, building a control system out of relatively independent control modules can reduce system development costs, increase system functionality, reduce communication loads, and provide a more fault-tolerant system in which single points of failure are eliminated or reduced. However, distributing control among the various controllers introduces other complexities such as, for example, task synchronization and efficient resource management.
Efficiently managing resources involves optimizing the allocation of processing tasks to the distributed controllers. In the area of general distributed computation, the problem of allocating processing tasks to distributed controllers has been approached in many ways, ranging from simple manual methods to more complex mathematical methods. Such mathematical methods typically involve intensive computations based on well-known strategies, such as weighted voting, network flow, spectral partitioning and geometric partitioning.
These known approaches, however, do not work satisfactorily in the context of industrial automation systems, principally because they fail to optimize resource utilization and ignore system considerations, such as load balancing, task synchronization, scheduling criteria and critical loop timing requirements. Incorporating all these considerations in the framework of a mathematical model is difficult and, even if possible, would explode computational requirements beyond the industry's cost/performance targets. Approaches based on such mathematical models also do not permit user participation in the allocation process.
Accordingly, there is a need for an innovative method to efficiently allocate the numerous processing tasks of a distributed control system to the various distributed controllers. Such a method would optimize utilization of the system's processing resources while also taking into consideration the system's other task-related and cost-related constraints and would provide for intervention by a user to refine the allocation process. The method also would reduce the amount of computation time required to determine an optimum allocation regardless of the complexity of the distributed control system. After determining the allocation, the control program stored in the main controller would be partitioned and the resulting portions would be transferred to and stored in the memory associated with each distributed controller.